package cc.cix.gt.org.service;

import cc.cix.gt.common.entity.ResultPage;
import cc.cix.gt.org.dto.query.QueryLoginLogReq;
import cc.cix.gt.org.entity.LoginLog;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author cix
 */
public interface ILoginLogService extends IService<LoginLog> {

    /**
     * 获取登录日志分页信息
     *
     * @param dto 查询对象
     * @return IPage<LoginLog>
     */
    ResultPage<LoginLog> listLoginLog(QueryLoginLogReq dto);

    /**
     * 保存登录日志
     *
     * @param loginLog 登录日志
     */
    void saveLoginLog(LoginLog loginLog);

    /**
     * 通过用户名获取用户最近7次登录日志
     *
     * @param username 用户名
     * @return 登录日志集合
     */
    List<LoginLog> listUserLastSevenLoginLogs(String username);

    /**
     * 获取今日访问次数
     *
     * @return 今日访问次数
     */
    Long getTodayVisitCount();

    /**
     * 获取今日访问 IP 数
     *
     * @return 今日访问 IP 数
     */
    Long getTodayIp();

    /**
     * 获取近 10 天访问记录
     *
     * @return 近 10 天访问记录
     */
    List<LoginLog> getLastTenVisitCount();

    /**
     * 获取近 10 天当前用户的访问记录
     *
     * @return 近 10 天当前用户的访问记录
     */
    List<LoginLog> getLastTenUserVisitCount();

}
